package string;

public class StringDemo {
    /**
     * 主函数，用于演示字符串相等性的判断以及字符串常量和变量之间的区别。
     *
     * @param args 命令行参数（未使用）
     */
    public static void main(String[] args) {
        // 定义两个字符串常量，它们的内容相同
        String s1 = "abc123";
        String s2 = "abc123";
        // 输出字符串及其比较结果
        System.out.println("s1 = " + s1);
        System.out.println("s2 = " + s2);
        System.out.println("s1 == s2 ? " + (s1 == s2));

        // 定义一个通过new关键字创建的字符串对象，其内容与s1相同
        String s3 = new String("abc123");
        // 输出字符串及其比较结果
        System.out.println("s3 = " + s3);
        System.out.println("s1 == s3 ? " + (s1 == s3));

        // 字符串连接演示
        String s4 = "abc" + "123";
        // 输出字符串及其比较结果
        System.out.println("s4 = " + s4);
        System.out.println("s1 == s4 ? " + (s1 == s4));

        // 动态字符串连接演示
        String s5 = "abc";
        String s6 = "123";
        String s7 = s5 + s6;
        // 输出字符串及其比较结果
        System.out.println("s7 = " + s7);
        System.out.println("s1 == s7 ? " + (s1 == s7));

        // 演示字符串引用赋值
        String s8 = s1;
        s1 = "abc1234";
        // 输出s8，展示字符串的不可变性
        System.out.println(s8);

        // 演示基本类型赋值和增量操作
        int i = 1;
        int j = i;
        i++;
        // 输出j，展示基本类型的按值传递特性
        System.out.println(j);

    }

}
